package club.xyes.pi4j.util;

/**
 * 2018/11/6 Create by 字节转换工具
 * ByteUtil
 * 转换字节二进制内容
 *
 * @author 字节转换工具
 * @date 2018/11/6
 */
public class ByteUtil {
    /**
     * 将完整无符号的byte（使用int代替）转换为byte（使用符号位表示最高位）
     *
     * @param b 字节
     * @return 字节
     */
    public static byte toUnsignedByte(int b) {
        if (b > Byte.MAX_VALUE) {
            return (byte) (b - 256);
        } else {
            return (byte) b;
        }
    }

    public static byte[] toUnsignedByte(int[] data) {
        byte[] res = new byte[data.length];
        for (int i = 0; i < res.length; i++) {
            res[i] = toUnsignedByte(data[i]);
        }
        return res;
    }

    /**
     * 将使用符号位表示最高位的字节转换为int
     *
     * @param unsignedByte 字节
     * @return int
     */
    public static int toInt(byte unsignedByte) {
        return unsignedByte >= 0 ? unsignedByte : unsignedByte + 256;
    }
}
